home *** CD-ROM | disk | FTP | other *** search
- {
- > Thanks For the code... It worked great! BTW, why are there so many
- > different sorting methods? Quick, bubble, Radix.. etc, etc
-
- Yes, there are lots of sorting algorithms out there! I also found this out
- the hard way! :-) A couple of years ago, I only knew the so-called "bubble"
- sort, and decided to create my own sorting algorithm. It would have to be
- faster than bubble, yet remaining small, simple, and not memory hungry.
- and I did it, but only to find out a few weeks later that there were much
- better sorts than the one I created... But it sure was great fun beating
- bubble! (which is brain-dead anyway! ;-)
-
- So here it is, my two cents to the history of sorting algorithms, the
- amazing, blazingly fast (*)... ELEVAtoR SorT!... Why ELEVAtoR??, you ask in
- unison! Because it keeps going up & down! :-)
- }
-
- Program mysort;
-
- Uses Crt;
-
- Const
- max = 1000;
-
- Type
- list = Array[1..max] of Word;
-
- Var
- data : list;
- dummy : Word;
-
-
- Procedure elevatorsort(Var a: list; hi: Word);
-
- Var
- lo,
- peak,
- temp,
- temp2 : Word;
-
- begin
- peak := 1;
- lo := 1;
- Repeat
- temp := a[lo];
- temp2 := a[lo + 1];
- if temp > temp2 then
- begin
- a[lo] := temp2;
- a[lo + 1] := temp;
- if lo <> 1 then dec(lo);
- end
- else
- begin
- inc(peak);
- lo:=peak;
- end;
- Until lo = hi;
- end;
-
-
- begin
- ClrScr;
- Writeln('Generating ', max ,' random numbers...');
- randomize;
- For dummy:=1 to max do data[dummy]:=random(65535);
- Writeln('Sorting random numbers...');
- elevatorsort(data,max);
- For dummy:=1 to max do Write(data[dummy]:5,' ');
- end.
-
- {
- (*) it's speed lies somewhere between "BUBBLE" and "inSERT"; it's much
- faster than "BUBBLE", and a little slower than "inSERT"... :-)
- }